解决k8s dashboard 部分浏览器无法访问的问题

解决k8s dashboard 部分浏览器无法访问的问题

1、查看证书资源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@k8s-master http_ssl]# kubectl get secrets -n kubernetes-dashboard
#创建证书生成目录
[root@k8s-master http_ssl]# pwd
/soft/http_ssl
#生成结束后会产生如下文件
[root@k8s-master http_ssl]# ll
total 36
-rw-r--r-- 1 root root 2078 Sep 17 16:32 dashboard.lisirk8s.com.crt
-rw-r--r-- 1 root root 1683 Sep 17 16:32 dashboard.lisirk8s.com.csr
-rw-r--r-- 1 root root 3243 Sep 17 16:32 dashboard.lisirk8s.com.key
-rw-r--r-- 1 root root 140 Sep 17 16:31 root-ca.cnf
-rw-r--r-- 1 root root 1939 Sep 17 16:31 root-ca.crt
-rw-r--r-- 1 root root 1667 Sep 17 16:31 root-ca.csr
-rw-r--r-- 1 root root 3243 Sep 17 16:31 root-ca.key
-rw-r--r-- 1 root root 17 Sep 17 16:32 root-ca.srl
-rw-r--r-- 1 root root 253 Sep 17 16:32 site.cnf

2、生成自签证书

2.1、openssl生成ca根证书,生成root-ca的key

1
openssl genrsa -out "root-ca.key" 4096

2.2、通过ca的key生成csr文件

1
openssl req -new -key "root-ca.key" -out "root-ca.csr" -sha256 -subj "/C=CN/ST=SC/L=CD/O=lisirGroup/CN=lisirRootCA"

2.2、配置ca证书

1
2
3
4
5
6
cat > root-ca.cnf << EOF
[root_ca]
basicConstraints = critical,CA:TRUE,pathlen:1
keyUsage = critical, nonRepudiation, cRLSign, keyCertSign
subjectKeyIdentifier=hash
EOF

2.3、签发根证书

1
openssl x509 -req -days 3650 -in "root-ca.csr" -signkey "root-ca.key" -sha256 -out "root-ca.crt" -extfile "root-ca.cnf" -extensions root_ca

3、ca根证书颁发server端证书

3.1、生成站点 SSL 私钥

1
openssl genrsa -out "dashboard.lisirk8s.com.key" 4096

3.2、使用私钥生成证书请求文件

1
openssl req -new -key "dashboard.lisirk8s.com.key" -out "dashboard.lisirk8s.com.csr" -sha256 -subj "/C=CN/ST=SC/L=CD/O=lisirGroup/CN=dashboard.lisirk8s.com"

3.3、配置证书,新建 site.cnf 文件

1
2
3
4
5
6
7
8
9
cat > site.cnf << EOF
[server]
authorityKeyIdentifier=keyid,issuer
basicConstraints = critical,CA:FALSE
extendedKeyUsage=serverAuth
keyUsage = critical, digitalSignature, keyEncipherment
subjectAltName = DNS:dashboard.lisirk8s.com, IP:192.168.1.201
subjectKeyIdentifier=hash
EOF

注意:上面的DNS和IP为选填部分,需要填写为server端的域名或ip

3.4、签署站点 SSL 证书

1
openssl x509 -req -days 750 -in "dashboard.lisirk8s.com.csr" -sha256 -CA "root-ca.crt" -CAkey "root-ca.key" -CAcreateserial -out "dashboard.lisirk8s.com.crt" -extfile "site.cnf" -extensions server

4、替换https证书

4.1、删除原来的证书

1
kubectl delete secret kubernetes-dashboard-certs -n kubernetes-dashboard

4.2、生成新的证书

1
kubectl create secret generic kubernetes-dashboard-certs -n kubernetes-dashboard --from-file=dashboard.crt=./dashboard.lisirk8s.com.crt --from-file=dashboard.key=./dashboard.lisirk8s.com.key

4.3、删除原kubernetes-dashboard,让其自动重启加载新的证书

1
2
kubectl delete pod kubernetes-dashboard-7d8466d688-7zq6z -n kubernetes-dashboard
kubectl get pod,svc -n kubernetes-dashboard -o wide

5、查看dashboard-admin用户token

1
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

6、导入ca证书到信任的根证书机构

从操作的服务器上将root-ca.crt下载下来,导入到需要访问的电脑中,并添加到受信任的颁发机构

7、各大浏览器进行测试

image_1eire0ugteg912dh1805hg6b889.png-147.4kB

-------------本文结束感谢您的阅读-------------
LiGuanCheng wechat
如有问题,请与我微信交流或通过右下角“daovoice”与我联系~。
请我喝一杯咖啡~